import { Injectable } from '@nestjs/common';
import { MailerService } from '@nestjs-modules/mailer';

@Injectable()
export class MailService {
  constructor(private mailerService: MailerService) {}

  async sendVerificationCode(to: string, code: string) {
    return this.mailerService.sendMail({
      to,
      subject: '注册验证码',
      html: `
        <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px;">
          <h2 style="color: #333; text-align: center;">验证码</h2>
          <p style="color: #666; line-height: 1.6;">您好，</p>
          <p style="color: #666; line-height: 1.6;">您的注册验证码是：</p>
          <div style="text-align: center; margin: 30px 0;">
            <span style="font-size: 32px; font-weight: bold; color: #4CAF50; letter-spacing: 5px;">
              ${code}
            </span>
          </div>
          <p style="color: #666; line-height: 1.6;">验证码有效期为5分钟，请尽快使用。</p>
          <p style="color: #666; line-height: 1.6;">如果您没有请求验证码，请忽略此邮件。</p>
          <hr style="border: none; border-top: 1px solid #eee; margin: 20px 0;">
          <p style="color: #999; font-size: 12px; text-align: center;">
            此邮件由系统自动发送，请勿回复。
          </p>
        </div>
      `,
    });
  }

  async sendPasswordReset(to: string, resetToken: string) {
    return this.mailerService.sendMail({
      to,
      subject: '密码重置请求',
      html: `
        <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px;">
          <h2 style="color: #333; text-align: center;">密码重置</h2>
          <p style="color: #666; line-height: 1.6;">您好，</p>
          <p style="color: #666; line-height: 1.6;">我们收到了您的密码重置请求。如果您没有请求重置密码，请忽略此邮件。</p>
          <p style="color: #666; line-height: 1.6;">要重置密码，请点击下面的按钮：</p>
          <div style="text-align: center; margin: 30px 0;">
            <a href="${process.env.FRONTEND_URL}/reset-password/${resetToken}" 
               style="background-color: #4CAF50; color: white; padding: 12px 24px; text-decoration: none; border-radius: 4px; display: inline-block;">
              重置密码
            </a>
          </div>
          <p style="color: #666; line-height: 1.6;">或者复制以下链接到浏览器：</p>
          <p style="color: #666; line-height: 1.6; word-break: break-all;">
            ${process.env.FRONTEND_URL}/reset-password/${resetToken}
          </p>
          <p style="color: #666; line-height: 1.6;">此链接将在1小时后过期。</p>
          <p style="color: #666; line-height: 1.6;">如果您遇到任何问题，请随时联系我们。</p>
          <hr style="border: none; border-top: 1px solid #eee; margin: 20px 0;">
          <p style="color: #999; font-size: 12px; text-align: center;">
            此邮件由系统自动发送，请勿回复。
          </p>
        </div>
      `,
    });
  }
} 